#include "test.h"
#include <position.h>
#include <string.h>
#include <movegen.h>
#include <fen.h>


#define CHECK_TEST(id, epd, ch) RUN_TEST("CHECK_" id, test_check, epd, ch)


static int test_check(const char* fen, int incheck)
{
  position_t pos;
  TEST_ASSERT(decode_epd(fen, &pos) != 0);
  int res = (movegen_detect_check(&pos) != 0);

  TEST_ASSERT((!res && !incheck) || (res && incheck));
  return 1;
}


void test_movegen()
{
  // no check
  CHECK_TEST("N01", "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -", 0);
  
  // check
  CHECK_TEST("Y01", "r6k/8/8/8/8/8/8/K7 w - -", 1);
}

